
class JQTableIF {
    constructor(conn,table_name,keys,primary_key,uniques) {
        this.table_name = table_name;
		this.conn=conn;
		this.keys=keys;
		this.primary_key=primary_key;
		this.uniques=uniques;
		
    }
	
	static instance(table_name,conn){
		const JQTableBase = require(`./tables/${table_name}`);
		let obj = new JQTableBase(conn);
		return obj;
	}
	
	
	
    async get(id,keys) { }
	async remove(id) {}
	async removes(ids) {}
	async create(data,assign,on_dup) {}
	async update(data,assign,on_dup) {}
	async update_where(data,assign,where) {}
	async updateSql(sql,params) {}
	async querySql(sql,params) {}
	async queryOne(alias_keys,params,group_by,order_by){}
	async query(alias_keys,params,first,size,group_by,order_by,is_count){}//(alias_keys,params,first,size,group_by,order_by,is_count){}
	async count(alias_keys,params,order_by,group_by){}
	async query2(alias_keys,alias_a_keys, a_keys,a_params, b_table,alias_b_keys,b_keys,b_params,joint,on_a,on_b,params, first,size,group_by,order_by,is_count){}//(alias_a_keys, a_keys,a_params,alias_b_keys, b_table,b_keys,b_params,joint,on_a,on_b,params, first,size,group_by,order_by,is_count){}
	async count2(alias_keys,alias_a_keys, a_keys,a_params,b_table,alias_b_keys, b_keys,b_params,joint,on_a,on_b,params, group_by,order_by){}//(alias_a_keys, a_keys,a_params,alias_b_keys, b_table,b_keys,b_params,joint,on_a,on_b,params, group_by,order_by){}
	
}
module.exports = JQTableIF;


